package com.retail.product.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.retail.product.dto.ProductQueryDTO;
import com.retail.product.entity.Product;
import com.retail.product.entity.ProductSku;
import com.retail.product.entity.ProductImage;
import com.retail.product.vo.ProductVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品Mapper接口
 *
 * @author retail
 * @since 2024-09-25
 */
@Mapper
public interface ProductMapper extends BaseMapper<Product> {

    /**
     * 分页查询商品列表
     *
     * @param page 分页参数
     * @param queryDTO 查询条件
     * @return 商品列表
     */
    IPage<ProductVO> selectProductPage(Page<ProductVO> page, @Param("query") ProductQueryDTO queryDTO);

    /**
     * 根据ID查询商品详情
     *
     * @param id 商品ID
     * @return 商品详情
     */
    ProductVO selectProductById(@Param("id") Long id);

    /**
     * 添加商品SKU
     *
     * @param productSku 商品SKU
     * @return 影响行数
     */
    int insertProductSku(@Param("sku") ProductSku productSku);

    /**
     * 批量添加商品图片
     *
     * @param images 商品图片列表
     * @return 影响行数
     */
    int insertProductImages(@Param("images") List<ProductImage> images);

    /**
     * 根据商品ID查询SKU列表
     *
     * @param productId 商品ID
     * @return SKU列表
     */
    List<ProductSku> selectSkusByProductId(@Param("productId") Long productId);

    /**
     * 根据商品ID查询图片列表
     *
     * @param productId 商品ID
     * @return 图片列表
     */
    List<ProductImage> selectImagesByProductId(@Param("productId") Long productId);
}
